package tv.athena.live.api.roominfov2

import com.yy.liveplatform.proto.nano.LpfLiveinfo
import com.yy.liveplatform.proto.nano.LpfLiveroomtemplateV2
import tv.athena.live.api.IDataCallback
import tv.athena.live.base.arch.IComponentApi
import tv.athena.live.utils.ServiceUtils

/**
 *     create by chenhaofeng 2019/12/20
 *
 *
 **/
interface RoomInfoV2Api : IComponentApi {

    interface RoomInfoV2Listener {
        fun onRoomInfoV2Change(roomInfoV2: LpfLiveroomtemplateV2.LiveRoomInfoV2)
    }

    fun updateLiveRoomInfoRespV2(streamRoomId: String)

    fun getLiveRoomInfoRespV2(): LpfLiveroomtemplateV2.LiveRoomInfoV2?

    fun getLiveRoomInfoRespV2(streamRoomId: String, callback: IDataCallback<LpfLiveroomtemplateV2.LiveRoomInfoV2>)

    fun getLiveRoomInfoRespV1(uid: Long, liveBzType: Int, callback: IDataCallback<LpfLiveinfo.LiveInfo>)

    fun addRoomInfoV2Listener(roomInfoV2Listener: RoomInfoV2Listener)

    fun removeRoomInfoV2Listener(roomInfoV2Listener: RoomInfoV2Listener)

    fun batchGetLiveRoomInfoReqV2(
            streamRoomIds: Array<String>,
            callback: IDataCallback<LpfLiveroomtemplateV2.BatchGetLiveRoomInfoRespV2>
    )

    /**
     *  根据房间类型房间角色查询房间信息
     *  channelTypes：0 普通频道，1 官频，2 公会频道
     *  roleIds：1 ow，2 房间管理员，3 房间超级管理员，4 普通用户
     */
    fun getChannelInfoList(
            channelTypes: IntArray,
            roleIds: IntArray,
            businessType: IntArray,
            callback: IDataCallback<LpfLiveroomtemplateV2.GetChannelListResp>
    )

    fun forceNotifyLiveRoomInfo(streamRoomId: String)
}